#include "box.h"

Box::Box()
{
}

Box::Box(const REAL x,const REAL y,const REAL w,const REAL h):m_min(x,y),m_size(w,h)
{
  if(m_size.getX() < 0 || m_size.getY() < 0)
  {
    m_size=Vector2(0,0);
  }
}

Box::Box(const Vector2 mi,const Vector2 si):m_min(mi),m_size(si)
{
  if(m_size.getX() < 0 || m_size.getY() < 0)
  {
    m_size=Vector2(0,0);
  }
}

Box::Box(const Box &b):m_min(b.m_min),m_size(b.m_size)
{
}

Box::Box(const SDL_Rect r):m_min(r.x,r.y),m_size(r.w,r.h)
{
}

Box::Box(const SDL_Rect *r):m_min(r->x,r->y),m_size(r->w,r->h)
{
}

void Box::move(const Vector2 &v)
{
  m_min=m_min+v;
}

void Box::locate(const Vector2 &v)
{
  m_min=v;
}

void Box::locate(const int x,const int y)
{
  m_min=Vector2(x,y);
}

void Box::setMin(const Vector2 &v)
{
  m_min=v;
}

void Box::setMin(const int x,const int y)
{
  m_min=Vector2(x,y);
}

void Box::setSize(const Vector2 &v)
{
  if(v.getX() >= 0 && v.getY() >= 0)
  {
    m_size=v;
  }
}

void Box::setSize(const int x,const int y)
{
  if(x >= 0 && y >= 0)
  {
    m_size=Vector2(x,y);
  }
}

void Box::setX(const REAL ax)
{
  m_min.setX(ax);
}

void Box::setY(const REAL ay)
{
  m_min.setY(ay);
}

void Box::setW(const REAL aw)
{
  if(aw < 0)
  {
    m_size.setX(aw);
  }
}

void Box::setH(const REAL ah)
{
  if(ah < 0)
  {
    m_size.setY(ah);
  }
}

REAL Box::getX()
{
  return m_min.getX();
}

REAL Box::getY()
{
  return m_min.getY();
}

REAL Box::getW()
{
  return m_size.getX();
}

REAL Box::getH()
{
  return m_size.getY();
}

SDL_Rect Box::getSDLRect()
{
  SDL_Rect r={m_min.getX(),m_min.getY(),m_size.getX(),m_size.getY()};
  return r;
}

Vector2 Box::getMin()const
{
  return m_min;
}

Vector2 Box::getSize()const
{
  return m_size;
}

Vector2 Box::getMax()const
{
  return m_min+m_size;
}
